1. Technical Field
The present disclosure relates to random number generation and more specifically to random number generation using asynchronous boundaries and phase-locked loops (PLLs).
2. Introduction
Random number generation is a critical part of many security systems. Random number generators (RNGs) also have applications in gambling, statistical sampling and cryptography amongst others. In cryptography, RNGs are used to generate cryptographic keys. Random number generators are designed to generate numbers such that they appear random although numbers generated by deterministic processes are not completely random. A random number generator that is based on a deterministic computation is referred to as pseudo-random number generator (PRNG). An example of a PRNG is a linear congruential generator which produces a sequence of pseudorandom values defined by a recurrence relation. True random number generators measure a physical phenomenon expected to be random but lack the efficiency required by some applications. In these cases, PRNGs are used to generate random numbers.
The ability to generate random numbers early in the boot process has applications in secure booting and communications. The task of generating random numbers early in the boot process is difficult because sources of entropy are unavailable. Existing random number generators depend on outside influences such as key presses, mouse movements or a timestamp to generate random numbers or require additional software or unconventional circuitry to implement, and may be unavailable for applications in a very early boot stage of a device. These and other problems, such as cost and inefficiency, make existing RNGs undesirable for certain applications.